/**
 * 
 */
package br.com.skynix.tcmc.model.enumeration;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada;

/**
 * @author davi
 * 
 */
public enum StatusFinanceiroEnum implements EntidadeEnumerada {
	ABERTO("A", "Aberto", "Aberto"), PAGO("P", "Pago", "Pago");

	private static Map<String, StatusFinanceiroEnum> status = new HashMap<String, StatusFinanceiroEnum>();
	static {
		for (StatusFinanceiroEnum st : EnumSet
				.allOf(StatusFinanceiroEnum.class)) {
			status.put(st.getCodigo(), st);
		}
	}

	private String codigo;

	private String textoCurto;

	private String textoLongo;

	/**
	 * @param codigo
	 * @param textoCurto
	 * @param textoLongo
	 */
	private StatusFinanceiroEnum(String codigo, String textoCurto,
			String textoLongo) {
		this.codigo = codigo;
		this.textoCurto = textoCurto;
		this.textoLongo = textoLongo;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getCodigo()
	 */
	@Override
	public String getCodigo() {
		return codigo;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getTextoCurto()
	 */
	@Override
	public String getTextoCurto() {
		return textoCurto;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.enumeration.EntidadeEnumerada#getTextoLongo()
	 */
	@Override
	public String getTextoLongo() {
		return textoLongo;
	}

	public static StatusFinanceiroEnum getStatus(String codStatus) {
		return status.get(codStatus);
	}

	public static Collection<StatusFinanceiroEnum> listAll() {
		List<StatusFinanceiroEnum> listaStatus = new ArrayList<StatusFinanceiroEnum>(
				status.values());
		Collections.sort(listaStatus, new Comparator<StatusFinanceiroEnum>() {
			@Override
			public int compare(StatusFinanceiroEnum s1, StatusFinanceiroEnum s2) {
				return s1.getCodigo().compareTo(s2.getCodigo());
			}
		});
		return listaStatus;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Enum#toString()
	 */
	@Override
	public String toString() {
		return codigo;
	}
}
